MySQL パラメータチューニング thread_cache, thread_handling系
#mysql #性能 #パフォーマンス
前提
MySQL スレッドプーリング(編集中)
MySQL スレッド(編集中)
スレッドの数とか使い回しとかそういう系のパラメータ
thread_cache_size
thread_handling
thread_handlingの値候補を知っておけ
候補は3つ
no-threads:単一スレッドで全接続を回す
こいつは無茶すぎる。開発だけしててほしい。
one-thread-per-connection(デフォルト)
1接続に対して1スレッド
loaded-dynamically
スレッドプーリング
スレッドの生成/破棄はオーバーヘッドなんだよ
前提
基本的に1接続に対して1スレッドあてがうんだよ。
そして、そのスレッドは接続のたびに生成され、そして事後に破棄されてる。
この生成と破棄はかなりのオーバーヘッドです。
接続数が増えれば増えるほど厄介なものになるでしょう。
そのために...
thread_cache_sizeを使う。
こいつは使い終わったスレッドを破棄さずにキャッシュしておき、次の接続にそのまま渡せる。
つまり、生成/破棄が減る!!!やったね。
大きさの見極め
サーバーシステム変数の「Connections(合計接続数)」と「Threads_created」の差異を見ておく。
Threads_createdの数が小さいなら、いい感じにthread_cache_sizeを設定できてる。
同じ値なら、全く効いてないので、もうちょい大きくしてみる。
もしくは、スレッドプール使おう。Enterpriseやけど。
あとはスレッドプール使ってみな、飛ぶぞ
説明:MySQL スレッドプーリング(編集中)